1. Field of the Invention
The present disclosure relates to computer program development in general, and to development of a computer program using service oriented architecture, in particular.
2. Description of Related Art
In Service Oriented Architecture (SOA), a computer program comprises at least a software module and a service layer comprising a set of services employed by the software module. In many scenarios the software module is a user interface (UI). When developing the software module the service layer needs to be available in order to examine the quality of the software module. When the service layer is not available to the developer of the software module, the development process may be held back or even brought to a complete stop.
In some cases, the service layer is not available as some of the services are not yet developed. Since the development of complex services is a time consuming task, some services may be unavailable for a long period of time.
In SOA based systems, some services are reused by several different software modules. Some services may even be reused by different developers of varied companies. For that purpose, those services need to be generic and may contain many fields to fit the needs of the variety of entities that may use the services. Each entity that uses the generic service would usually use only a small fraction of the fields, logic and capabilities of the generic service. Hence, using a generic service requires good familiarity with its various fields. Normally, a developer is not familiar with many generic services and mapping a set of fields of a generic service that the service module should use is a time consuming task for him. A developer familiar with the generic service, such as a service developer, may perform such a task more efficiently.
In other cases, it may be desirable to produce a working prototype showing basic features of the computer program in a short time period. The prototype may later be used to better define a service that will be needed by a finalized software module.
In some scenarios, examining the quality of a software module requires operating a service many times. When a service is complex, it may require a non-negligible computation time each time it is operated. Also, additional resources such as hardware resources may be required for operating a complex service. In such scenarios, the Quality Assurance (QA) process is less cost effective, as a time resource is being wasted and the additional resources are required.
In view of the foregoing, the development process of the service module is usually postponed until the services are fully developed and until a service developer maps the fields to be used by the software module. The development of the software module is completed only after the service layer is completed.
There is therefore a need for an apparatus and method to enable a development of a computer program by parallel development of the software module and the service layer.